class Vue{
    constructor(options){
        this.options=options||{} //保存vue数据
        this.$data=options.data ||{}
        this.$el=typeof options.el ==='string'?document.querySelector(options.el):options.el
        this._proxyDate(this.$data)
        new Observe(this.$data)
        new Compiler(this)
        
    }
    _proxyDate(data){

        Object.keys(data).forEach(key=>{
            Object.defineProperty(this,key,{
                enumerable:true,//可枚举 可循环
                configurable:true, //可删除// 可以从新定义
                get(){
                    return data[key]
                },
                set(newValue){
                    if(newValue===data[key]){
                        return 
                    }
                    data[key]=newValue
                }
            })
        })
    }
}